package com.xjm_cloud_admin.util;

import com.google.common.hash.HashCode;
import com.google.common.hash.Hashing;
import com.google.common.io.Files;
import com.xjm_cloud_admin.enums.FileTypeEnum;

import java.io.*;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.security.DigestInputStream;
import java.security.MessageDigest;
import java.util.ArrayList;
import java.util.List;


/**
 * @author 浪漫写尽歌谱
 */
public class CommonUtils {

    /**
     * 获取邮箱前缀
     *
     * @param email 邮箱
     * @return 邮箱前缀
     */
    public static String getEmailPrefix(String email) {
        if (email == null || email.isEmpty()) {
            return "";
        }
        return email.split("@")[0];
    }

    /**
     * 获取文件类型
     *
     * @param filename 文件名
     * @return 文件类型
     */
    public static String getFileType(String filename) {
        String suffix = filename.substring(filename.lastIndexOf("."));
        if (suffix.equalsIgnoreCase(".jpg") || suffix.equalsIgnoreCase(".png") || suffix.equalsIgnoreCase(".jpeg") || suffix.equalsIgnoreCase(".gif")||suffix.equalsIgnoreCase(".webp")) {
            return FileTypeEnum.IMAGE.getValue();
        } else if (suffix.equalsIgnoreCase(".mp4") || suffix.equalsIgnoreCase(".avi") || suffix.equalsIgnoreCase(".flv") || suffix.equalsIgnoreCase(".rmvb")) {
            return FileTypeEnum.VIDEO.getValue();
        } else if (suffix.equalsIgnoreCase(".mp3") || suffix.equalsIgnoreCase(".wav") || suffix.equalsIgnoreCase(".flac")) {
            return FileTypeEnum.AUDIO.getValue();
        } else if (suffix.equalsIgnoreCase(".doc") || suffix.equalsIgnoreCase(".docx")) {
            return FileTypeEnum.DOCX.getValue();
        } else if (suffix.equalsIgnoreCase(".pdf")) {
            return FileTypeEnum.PDF.getValue();
        } else if (suffix.equalsIgnoreCase(".html")) {
            return FileTypeEnum.HTML.getValue();
        } else if (suffix.equalsIgnoreCase(".java")) {
            return FileTypeEnum.JAVA.getValue();
        } else if (suffix.equalsIgnoreCase(".js")) {
            return FileTypeEnum.JS.getValue();
        } else if (suffix.equalsIgnoreCase(".md")) {
            return FileTypeEnum.MD.getValue();
        } else if (suffix.equalsIgnoreCase(".php")) {
            return FileTypeEnum.PHP.getValue();
        } else if (suffix.equalsIgnoreCase(".ppt") || suffix.equalsIgnoreCase(".pptx")) {
            return FileTypeEnum.PPT.getValue();
        } else if (suffix.equalsIgnoreCase(".py")) {
            return FileTypeEnum.PYTHON.getValue();
        } else if (suffix.equalsIgnoreCase(".xls") || suffix.equalsIgnoreCase(".xlsx")) {
            return FileTypeEnum.XLS.getValue();
        } else if (suffix.equalsIgnoreCase(".mxl")) {
            return FileTypeEnum.XML.getValue();
        } else if (suffix.equalsIgnoreCase(".word")) {
            return FileTypeEnum.WORD.getValue();
        } else {
            return FileTypeEnum.DOCUMENT.getValue();
        }
    }

    /**
     * 获取文件名后缀
     *
     * @param fileName 文件名称
     * @return 文件后缀
     */
    public static String getFileNameSuffix(String fileName) {
        return fileName.substring(fileName.lastIndexOf("."));
    }

    /**
     * 获取文件名后缀
     *
     * @param fileName 文件名称
     * @return 文件后缀
     */
    public static String getFileNameSuffixNo(String fileName) {
        return fileName.substring(fileName.lastIndexOf(".") + 1);
    }

    /**
     * 获取文件名前缀
     *
     * @param fileName 文件名称
     * @return 文件前缀
     */
    public static String getFileNamePrefix(String fileName) {
        return fileName.substring(0, fileName.lastIndexOf("."));
    }

}
